/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package progweb.project.Manager;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.ListIterator;
import org.apache.log4j.*;

/**
 * Classe che permette di creare i pdf
 * @author Valentino Briani
 */
public class PDFWriter {
    private static org.apache.log4j.Logger log=Logger.getLogger(PDFWriter.class);
    
    public static void creaPDF(Timestamp data, ArrayList<Paziente> pazienti,  Medico medico) {
        log.info("Creazione pdf");
        Document document=new Document();
        File file=new File("d:/Documenti/Scuola/III anno/Programmazione per il web/Progetti/Progetto1/ProvettaI/web/pdf/pdf"+medico.getNome()+medico.getCognome()+".pdf");
        try {
            PdfWriter.getInstance(document, new FileOutputStream(file));
        } catch (Exception ex) {
            log.error("", ex);
        }
        document.open();
        ListIterator<Paziente> i=pazienti.listIterator();
        Paziente p;
        //Creazione di una pagina per ogni paziente
        while (i.hasNext()) {
            document.newPage();
            p=i.next();
            log.debug("Lettera "+p.getNomeCognome());
            //Testo della lettera
            Paragraph p0=new Paragraph(data.getDate()+"/"+(data.getMonth()+1)+"/"+(data.getYear()+1900)+"\n\n");
            p0.setAlignment(Paragraph.ALIGN_RIGHT);
            Paragraph p1=new Paragraph("Egregio/a Signor/a "+p.getNomeCognome()+",");
            Paragraph p2=new Paragraph("La invitiamo a presentarsi per la vaccinazione in data "+data.toString().substring(0, 19) +". Di seguito riportiamo i precedenti richiami.");
            p2.setAlignment(Paragraph.ALIGN_JUSTIFIED);
            Paragraph p3=new Paragraph("Cordiali Saluti.\n\n");
            Paragraph p4=new Paragraph("Dr. "+medico.getNomeCognome()+"\n\n\n");
            p4.setAlignment(Paragraph.ALIGN_RIGHT);
            //Tabella con il resoconto dei richiami precedenti
            PdfPTable t=new PdfPTable(2);
            PdfPCell h1=new PdfPCell(new Phrase("DATA"));
            PdfPCell h2=new PdfPCell(new Phrase("MEDICO"));
            t.addCell(h1);
            t.addCell(h2);
            ArrayList<Richiamo> richiami=DBManager.getRichiamiFromIdPaziente(p);
            ListIterator<Richiamo> j=richiami.listIterator();
            PdfPCell c1;
            PdfPCell c2;
            Richiamo r;
            if (richiami.isEmpty()) {
                c1=new PdfPCell(new Phrase("-"));
                c2=new PdfPCell(new Phrase("-"));
                t.addCell(c1);
                t.addCell(c2);
            } else {
                while (j.hasNext()) {
                    r=j.next();
                    c1=new PdfPCell(new Phrase(r.getDataSenzaMs()));
                    c2=new PdfPCell(new Phrase(r.getMedico().getNomeCognome()));
                    t.addCell(c1);
                    t.addCell(c2);
                }
            }
            try {
                document.add(p0);
                document.add(p1);
                document.add(p2);
                document.add(p3);
                document.add(p4);
                document.add(t);
            } catch (DocumentException ex) {
                log.error("", ex);
            }
        }
        document.close();
        log.info("Pdf creato");
    }
}
